import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {

    /**
     * 字符串替换
     */
//    public class Solution {
//        /**
//         * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//         *
//         *
//         * @param str string字符串 原串
//         * @param arg char字符型一维数组 需替换数组
//         * @return string字符串
//         */
//        public String formatString (String _str, char[] arg) {
//            // write code here
//            String  str = _str.replaceAll("%s", "-");
//            int index = 0;
//            StringBuffer sb = new StringBuffer();
//            for (int i = 0; i < str.length(); i++) {
//                if (str.charAt(i) == '-') {
//                    sb.append(arg[index++]);
//                } else {
//                    sb.append(str.charAt(i));
//                }
//            }
//            while (index <= arg.length - 1) {
//                sb.append(arg[index++]);
//            }
//            return sb.toString();
//        }
//    }

    /**
     * 神奇数:
     *
     */

//    import java.util.Scanner;
//
//    // 注意类名必须为 Main, 不要有任何 package xxx 信息
//    public class Main {
//
//        static boolean check(int x) {
//            //先将所有数位存入数组
//            int[] nums = new int[10];
//            int n = 0;
//            while(x > 0) {
//                nums[n++] = x % 10;
//                x /= 10;
//            }
//            //枚举的方式将所有可能得数位组合枚举出来 再判断枚举出来的数是否是质数 是质数则当前该数i是神奇数
//            for(int i = 0; i < n; i++) {
//                if(nums[i] == 0) continue;
//                for(int j = 0; j < n; j++) {
//                    if(i != j) {
//                        int num = nums[i] * 10 + nums[j];//组合数
//                        if(isPrime(num)) {
//                            return true;
//                        }
//                    }
//                }
//            }
//            return false;
//        }
//        static boolean isPrime(int num) {
//            //判断是否是质数
//            for(int i = 2; i <= Math.sqrt(num); i++) {
//                if(num % i ==0) return false;
//            }
//            return true;
//        }
//
//        public static void main(String[] args) {
//            Scanner in = new Scanner(System.in);
//            // 注意 hasNext 和 hasNextLine 的区别
//            while (in.hasNextInt()) { // 注意 while 处理多个 case
//                int a = in.nextInt();
//                int b = in.nextInt();
//                int ret = 0;
//                for(int i = Math.max(a, 10); i <= b; i++) {
//                    //判断该数是否是神奇数
//                    if(check(i)) ret++;
//                }
//                System.out.println(ret);
//            }
//        }
//    }

/**
 * dna序列
 */
//    import java.util.Scanner;
//
//    // 注意类名必须为 Main, 不要有任何 package xxx 信息
//    public class Main {
//        public static void main(String[] args) {
//            Scanner in = new Scanner(System.in);
//            // 注意 hasNext 和 hasNextLine 的区别
//            while (in.hasNext()) { // 注意 while 处理多个 case
//                String str = in.next();
//                int n = in.nextInt();
//                int left = 0;
//                int right = 0;
//                int count = 0;
//                int start = 0;
//                int cur = 0;
//                //进窗口
//                while (right < str.length()) {
//                    while (right - left < n) {
//                        if (str.charAt(right) == 'G' || str.charAt(right) == 'C') {
//                            cur++;
//                        }
//                        right++;
//                    }
//                    //更新结果
//                    if (cur > count) {
//                        count = cur;
//                        start = left;
//                    }
//                    if(str.charAt(left) == 'G' || str.charAt(left) == 'C') cur--;
//                    left++;
//                }
//                System.out.println(str.substring(start, start + n));
//            }
//        }
//    }

/**
 * 贪心 游游
 */
//    import java.util.Scanner;
//
//    // 注意类名必须为 Main, 不要有任何 package xxx 信息
//    public class Main {
//        public static void main(String[] args) {
//            Scanner in = new Scanner(System.in);
//            int q = in.nextInt();
//            int a;
//            int b;
//            int c;
//            while (q-- > 0) {
//                int ret = 0;
//                a = in.nextInt();
//                b = in.nextInt();
//                c = in.nextInt();
//                //贪心 尽可能多的组you 然后 组 oo
//                //组成you的个数取决于最少得字母数
//                int x = Math.min(a,Math.min(b,c));
//                System.out.println(x * 2 + Math.max(b - x - 1, 0));
//            }
//        }
//    }


/**
 *  找最后剩下的数
 * 动态规划
 */
//public class Solution {
//    public int LastRemaining_Solution (int n, int m) {
//        // write code here
//        int f = 0;
//        for(int i = 2; i <=n;i++) {
//            f = (f + m) % i;
//        }
//        //最终f 存的是 dp[n];
//        return f;
//    }
//}

/**
 * 大数加法
 */
//public class Solution {
//    public String solve (String s, String t) {
//        int i = s.length() - 1;
//        int j = t.length() - 1;
//        StringBuilder ret = new StringBuilder();
//        int x = 0;
//        //注意: 这个地方可能会最后i j 到 -1了 但x中还有值 任然是要进循环让他加上的
//        while(i >= 0 || j >=0 || x > 0) {
//            if(i >= 0) x += s.charAt(i) - '0';
//            if(j >= 0) x += t.charAt(j) - '0';
//            ret.append( (char)(x % 10 + '0') );
//            x = x / 10;
//            i--;
//            j--;
//        }
//        return ret.reverse().toString();
//    }
//}
    /**
     * 滑动窗口吃桃
     */
//import java.util.Scanner;
//
//    // 注意类名必须为 Main, 不要有任何 package xxx 信息
//    public class Main {
//        public static void main(String[] args) {
//            Scanner in = new Scanner(System.in);
//            int n = in.nextInt();
//            int k = in.nextInt();
//            int right = 1;
//            int left = 1;
//            long[] arr1 = new long[n + 1];
//            long[] arr2 = new long[n + 1];
//            for (int i = 1; i <= n; i++) {
//                arr1[i] = in.nextLong();
//            }
//            for (int i = 1; i <= n; i++) {
//                arr2[i] = in.nextLong();
//            }
//            long hSum = 0;//统计某天开始吃桃 可获得的总开心值
//            long sSum = 0;//统计羞耻值
//            long hMAXSum = 0; //统计最大的开心值
//            long sMINSum = 0; //统计最小的羞耻值
//            int begin = 0; //记录吃桃的天
//            while (right <= n) {
//                //进窗口
//                hSum += arr1[right];
//                sSum += arr2[right];
//                //出窗口
//                while (right - left + 1 > k) {
//                    hSum -= arr1[left];
//                    sSum -= arr2[left];
//                    left++;
//                }
//                //更新结果
//                if (right - left + 1 == k) {
//                    if (hSum > hMAXSum) {
//                        hMAXSum = hSum;
//                        sMINSum = sSum;
//                        begin = left;
//                    } else if(hSum == hMAXSum && sSum < sMINSum){
//                        hMAXSum = hSum;
//                        sMINSum = sSum;
//                        begin = left;
//                    }
//                }
//                right++;
//            }
//            System.out.println(begin);
//        }
//    }
    /**
     * 前缀和方法
     */
   /* import java.util.Scanner;

    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            while (in.hasNextInt()) { // 注意 while 处理多个 case
                int n = in.nextInt();
                int k = in.nextInt();
                int[] arr1 = new int[n + 1];
                int[] arr2 = new int[n + 1];
                for (int i = 1; i <= n; i++) {
                    arr1[i] = in.nextInt();
                }
                for (int i = 1; i <= n; i++) {
                    arr2[i] = in.nextInt();
                }
                //前缀和
                long[] preSumH = new long[n + 1];
                long[] preSumS = new long[n + 1];
                for(int i = 1; i <=n; i++) {
                    preSumH[i] = preSumH[i - 1] + arr1[i];
                    preSumS[i] = preSumS[i - 1] + arr2[i];
                }
                long HMaxSum = 0;
                long SMinSum = 0;
                int begin = 0;
                for(int i = 1; i <= n - k + 1; i++) {
                    int right = i + k - 1;
                    long sum1 = preSumH[right] - preSumH[i - 1];
                    long sum2 = preSumS[right] - preSumS[i - 1];
                    if(sum1 > HMaxSum || (sum1 == HMaxSum && sum2 < SMinSum)) {
                        begin = i;
                        HMaxSum = sum1;
                        SMinSum = sum2;
                    }
                }
                System.out.println(begin);
            }
        }
    }*/

    /**
     * 压缩字符串1
     */
//    import java.util.*;
//    public class Solution {
//        public String compressString (String param) {
//            //双指针法
//            int left = 0;
//            int right = 0;
//            int n = param.length();
//            char[] ch = param.toCharArray();
//            StringBuffer ret = new StringBuffer();
//            while (right < n) {
//                while (right < n && ch[right] == ch[left]) {
//                    right++;
//                }
//                ret.append(ch[left]);
//                if (right - left > 1) {
//                    ret.append(right - left);
//                }
//                left = right;
//            }
//            return ret.toString();
//        }
//    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //topK问题
        int n = in.nextInt();
        int k = in.nextInt();
        Pair[] orange = new Pair[n];
        PriorityQueue<Pair> heap = new PriorityQueue<>((p1, p2) -> {
            //先根据甜度比 然后再根据酸度比
            if (p1.sweet == p2.sweet) return Long.compare(p1.sour, p2.sour);
            else return Long.compare(p2.sweet, p1.sweet);
        });
        for (int i = 0; i < n; i++) {
            orange[i] = new Pair();
            orange[i].sour = in.nextLong();
        }
        for (int i = 0; i < n; i++) {
            orange[i].sweet = in.nextLong();
            heap.add(orange[i]);
        }

        //堆顶的k个元素就要输出的对象
        long a = 0;
        long b = 0;
        while (k-- > 0) {
            Pair p = heap.poll();
            a += p.sweet;
            b += p.sour;
        }
        System.out.println(b + " " + a);
    }
}

class Pair {
    public long sour;
    public long sweet;

    //构造方法
    Pair() {
    }

    ;

    Pair(long sour, long sweet) {
        this.sour = sour;
        this.sweet = sweet;
    }

}
